6607
10675
Cerrado. Esta pregunta necesita detalles o claridad. Actualmente no acepta respuestas.
¿Quieres mejorar esta pregunta? Agrega detalles y aclara el problema editando esta publicación.
Cerrado hace 1 año.
Mejora esta pregunta
Estoy haciendo un desafío de código y quiero obtener los primeros 3 valores de mi matriz especificando el índice de inicio y obteniendo solo los primeros (3 o pueden tener cualquier longitud) valores del índice de inicio.
Probé este código y está funcionando, pero la estructura del código es demasiado larga, entonces, ¿cómo puedo acortarlo para que sea fácil de entender?
int n = 10;
firma doble = nueva doble [] {1, 1, 1};
doble [] ret = nuevo doble [n];
suma doble = 0;
ret [0] = firma [0];
ret [1] = firma [1];
ret [2] = firma [2];
int x, i;
para (i = 0; i 
                                
Usando LINQ puedes probar algo como esto:
valores var = array.Skip (índice)
.Tomado)
.ToArray ();
Donde índice es el índice del primer artículo yn el número de artículos que desea seleccionar.
P.ej. https://dotnetfiddle.net/Pk1rwY
Como nota al margen. Usar LINQ no significa que su código sea más rápido. Sería más compacto / legible, etc. Para evaluar el rendimiento de su código, debe usar algo como BenchmarkDotNet.
|
Sin solución Linq:
private static T [] Extract  (T [] fuente, int fromIndex, int length) {
si (nulo == fuente)
lanzar una nueva ArgumentNullException (nombre de (fuente));
else if (fromIndex <0)
lanzar una nueva ArgumentOutOfRangeException (nameof (fromIndex),
"Desde el índice no debe ser negativo");
else if (longitud <0)
lanzar una nueva ArgumentOutOfRangeException (nombre de (longitud),
"La longitud no debe ser negativa");
if (fromIndex> = source.Length || length == 0)
devolver nuevo T [0];
T [] resultado = nuevo T [Math.Min (length, source.Length - fromIndex)];
Array.Copy (fuente, fromIndex, resultado, 0, result.Length);
devolver resultado;
}
Entonces
doble [] firma = nuevo doble [] {0, 1, 2, 3, 4, 5};
double [] ret = Extraer (firma, 3, 2);
Console.Write (string.Join (",", ret));
Salir:
3, 4
|
A partir de su pregunta, debe aprovechar los operadores .Take y .Skip.
var resultado = matriz.Skip (índiceInicio) .Tomar (númeroDeElementos)
Por lo tanto, a partir de su código, parece que está tratando de hacer algo un poco diferente, es decir, sumar elementos. El operador .Sum podría ser de ayuda aquí.
|
No es la respuesta que estás buscando? Lea otras preguntas en las etiquetas c # arrays linq o formule su propia pregunta.